import ud from '/api/usrData.js'
/* 增 */
function add(pid, callback) {
    update(pid, 1, callback);
}
/* 删 */
function reduce(pid, callback) {
    update(pid, -1, callback);
}

/* 改 */
function update(pid, num = 1, callback, flag = false) {
    /* 获取用户数据 */
    const usrData = JSON.parse(localStorage.getItem('usrData'));
    /* 判断用户是否登录 */
    if (usrData) {
        /* 通过token获取详细数据 */
        ud.getData(`/${encodeURIComponent(usrData.token)}`, data => {
            // console.log(res.data.cartData);
            if (flag) {
                data.cartData[pid] = data.cartData[pid] == undefined ? num : (data.cartData[pid] + num <= 0 ? 1 : data.cartData[pid] + num);
            } else {
                data.cartData[pid] = data.cartData[pid] == undefined ? 1 : (data.cartData[pid] + num <= 0 ? 1 : data.cartData[pid] + num);
            }
            /* 获取购物车商品数量 */
            const shopping_amount = Object.keys(data.cartData).length;
            ud.updateData(`/${encodeURIComponent(usrData.token)}`, data, () => {
                if (callback) {
                    callback(shopping_amount, data.cartData[pid])
                }
            })
        })
    } else {
        return false;
    }
}

/* 删除单个商品 */
function del(pid, callback) {
    let usrData = JSON.parse(localStorage.getItem('usrData'));
    ud.getData(`/${encodeURIComponent(usrData.token)}`, data => {
        /* 删除 */
        if (Array.isArray(pid)) {
            pid.forEach(el => delete data.cartData[el])
        } else {
            delete data.cartData[pid];
        }
        const shopping_amount = Object.keys(data.cartData).length;
        ud.updateData(`/${encodeURIComponent(usrData.token)}`, data, () => {
            if (callback) callback(shopping_amount);
        })
    })
}

/* 查 */
function getCart(callback) {
    /*  判断用户是否登录 */
    let usrData = JSON.parse(localStorage.getItem('usrData'));
    if (usrData) {
        /* 通过token获取用户详细信息 */
        ud.getData(`/${encodeURIComponent(usrData.token)}`, d => {
            /* 判断是否有购物车 是否为空 */
            if (!d.cartData || JSON.stringify(d.cartData) == "{}") return callback('noData');
            let urls = [];
            for (const key in d.cartData) {
                urls.push(axios.get(`http://localhost:3000/plist?pid=${key}`))
            }
            axios.all(urls).then(res => {
                // let arr = [];
                // res.forEach((element, i) => {
                //     const p = element.data[0];
                //     /* 
                //         数据格式为 [ 商品数量 , [ 商品信息 ] ]
                //     */
                //     arr.push([
                //         d.cartData[p.pid],
                //         p
                //     ]);
                // });
                /* 
                    数据格式为 [ 商品数量 , [ 商品信息 ] ]
                */
                callback(res.map(el => [d.cartData[el.data[0].pid], el.data[0]]));
            })
        })
    } else {
        callback('err')
        return 'err';
    }
}
export default {
    add,
    reduce,
    update,
    del,
    getCart
}
/* 清除整个商品 */
// function removeCart(pid, callback) {
//     let usrData = JSON.parse(localStorage.getItem('usrData'));
//     axios.get(`http://localhost:3000/usrinfo/${encodeURIComponent(usrData.token)}`)
//         .then(res => {
//             /* 获取购物车数据 */
//             const data = res.data;
//             // console.log(data);
//             /* 删除 */
//             delete data.cartData[pid];
//             // console.log(data);
//             /* 记录剩余商品数量 */
//             const shopping_amount = Object.keys(data.cartData).length;
//             axios.put(`http://localhost:3000/usrinfo/${encodeURIComponent(usrData.token)}`, data)
//                 .then(res => {
//                     // console.log(pid);
//                     /* 执行回调函数并把新的商品总数传入 */
//                     callback(shopping_amount);
//                 })
//                 .catch(err => {
//                     console.log(err + '删除失败');
//                 })
//         })
// }

// function updateCart(pid, num = 1, callback, flag = false) {
//     /* 获取用户数据 */
//     const usrData = JSON.parse(localStorage.getItem('usrData'));
//     /* 判断用户是否登录 */
//     if (usrData) {
//         /* 通过token获取详细数据 */
//         axios.get(`http://localhost:3000/usrinfo/${encodeURIComponent(usrData.token)}`)
//             .then(res => {
//                 /* 数据处理 */
//                 const data = res.data;
//                 // console.log(res.data.cartData);
//                 if (flag) {
//                     data.cartData[pid] = num;
//                 } else {
//                     data.cartData[pid] = data.cartData[pid] == undefined ? 1 : (data.cartData[pid] + num <= 0 ? 1 : data.cartData[pid] + num);
//                 }
//                 /* 获取购物车商品数量 */
//                 const shopping_amount = Object.keys(data.cartData).length;
//                 axios.put(`http://localhost:3000/usrinfo/${encodeURIComponent(usrData.token)}`, data)
//                     .then(res => {
//                         if (callback) {
//                             callback(shopping_amount, data.cartData[pid])
//                         }

//                     })
//             })
//     } else {
//         return false;
//     }
// }


/* 查 */
// async function getCart(callback) {
//     /*  判断用户是否登录 */
//     let usrData = JSON.parse(localStorage.getItem('usrData'));
//     if (usrData) {
//         /* 通过token获取用户详细信息 */
//         axios.get(`http://localhost:3000/usrinfo/${encodeURIComponent(usrData.token)}`)
//             .then(res => {
//                 /* 处理信息 */
//                 const d = res.data;
//                 /* 判断是否有购物车 是否为空 */
//                 if (!d.cartData || JSON.stringify(d.cartData) == "{}") return callback('err');
//                 const result = async (d) => {

//                     /* 遍历购物车数据中的商品id 获取商品信息 并存入arr数组中 */
//                     let arr = [];
//                     for (const key in d) {
//                         await axios.get(`http://localhost:3000/plist?pid=${key}`)
//                             .then(r => {
//                                 const p = r.data[0];
//                                 /* 
//                                     数据格式为 [ 商品数量 , [ 商品信息 ] ]
//                                 */
//                                 arr.push([
//                                     d[key],
//                                     p
//                                 ]);
//                             })
//                     }
//                     /* 返回 */
//                     return arr;
//                 }
//                 /* 调用回调函数处理数据 */
//                 result(d.cartData).then(res => {
//                     callback(res);
//                 })
//             })
//     } else {
//         callback("err");
//     }
// }